{"id":552,"date":"2026-07-01T12:47:27","date_gmt":"2026-07-01T12:47:27","guid":{"rendered":"https:\/\/www.r3tr0.net\/?p=552"},"modified":"2026-07-01T12:47:27","modified_gmt":"2026-07-01T12:47:27","slug":"wondermca-adding-data-bit-on-the-bus","status":"publish","type":"post","link":"https:\/\/www.r3tr0.net\/index.php\/2026\/07\/01\/wondermca-adding-data-bit-on-the-bus\/","title":{"rendered":"WonderMCA &#8211; Adding data bit on the BUS"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Part of the REV4 revision of the WonderMCA board objective was to introduce 16Bit data Bus instead of 8Bit.All the PS\/2 MCA Bus are able to handle 16Bits data slave along with 24Bits address lines. The expected outcome is to double the MEM &amp; IO bandwidth and thus increase the native disk transfer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new board revision provides now 2 SN74CB3T3245DWR to cover DO-15 data lines, following the same multiplexing logic to the RP2350.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When D_OE signal is asserted (LOW), then A_OE is HIGH and the 2 SN74CB3T3245DWR are active to read or write data on the MCA bus according the cycle type (MEMR,MEMW,IOR,IOW)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reading carefully the MCA sepcification the following new signals needs to be handle both by the CPLD and by the RP2350<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\/CD_DS_16n: This signal is an active LOW signal (Totem Pole), per MCA slot, slave driven, that defines when a slave is able to perform a 16 Bit data transfer,<\/li>\n\n\n\n<li>\/SBHE: This signal defines if the High data bank is valid for this cycle,<\/li>\n\n\n\n<li>A0: Address type<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\/CD_DS_16 follow exactly the same tricky timing constraint and need to be asserted as soon as a valid MIO and unlatched address is present on the MCA Bus. It means that the CPLD needs to manage the right combinaition to assert this line according the address scope on the bus (D0000+D4000). CD_DS_16 need to be deasserted as soon as the address scope is not valid anymore on the bus. This mecanism is different from CHRDY and will require special equation on the CPLD.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As a first step, 16 bit data transfer will be enable for MEMR &amp; MEMW cycle and we will extend it to IOR and IOW afterwards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The IBM specification (HITRA02), provdides on page 53 the data steering mecanism, and it requires to spend sometimes to really understand what kind of case to be handled<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These are the 4 case provided by the IBM specs according the A0,A1 and \/SBHE for a single byte A,B,C,D.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\/SBHE<\/th><th class=\"has-text-align-left\" data-align=\"left\">A1<\/th><th class=\"has-text-align-left\" data-align=\"left\">A0<\/th><th class=\"has-text-align-left\" data-align=\"left\">D8-D15<\/th><th class=\"has-text-align-left\" data-align=\"left\">D0-D7<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8211;<\/td><td class=\"has-text-align-left\" data-align=\"left\">A<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">B<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8211;<\/td><td class=\"has-text-align-left\" data-align=\"left\">C<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">D<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8211;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">First case is and even Address with A0=0 and \/SBHE not asserted, it is like a classic 8 bit transfer the High data bank (D8-D15) is ignored (should be).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Second case is an odd Address with A0=1 and \/SBHE asserted, still single bytes however it has to be provided on the High Address bank&#8230; It seems a bit wired<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The 3rd and 4th case are the same but with Address A1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now for a 2 Bytes transfer:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\/SBHE<\/th><th class=\"has-text-align-left\" data-align=\"left\">A1<\/th><th class=\"has-text-align-left\" data-align=\"left\">A0<\/th><th class=\"has-text-align-left\" data-align=\"left\">D8-D15<\/th><th class=\"has-text-align-left\" data-align=\"left\">D0-D7<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">B<\/td><td class=\"has-text-align-left\" data-align=\"left\">A<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">D<\/td><td class=\"has-text-align-left\" data-align=\"left\">C<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It is pretty much the same approach,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Assembling Single (A,B) and 2 Bytes (AB) transfer these are the case to be implemented:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Case #<\/th><th class=\"has-text-align-left\" data-align=\"left\">\/SBHE<\/th><th class=\"has-text-align-left\" data-align=\"left\">A1<\/th><th class=\"has-text-align-left\" data-align=\"left\">A0<\/th><th class=\"has-text-align-left\" data-align=\"left\">D8-D15<\/th><th class=\"has-text-align-left\" data-align=\"left\">D0-D7<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">C1<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8211;<\/td><td class=\"has-text-align-left\" data-align=\"left\">A<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">C2<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">B<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8211;<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">C3<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">B<\/td><td class=\"has-text-align-left\" data-align=\"left\">A<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">if you look more closely, there is one missing case that is<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">\/SBHE<\/th><th class=\"has-text-align-left\" data-align=\"left\">A1<\/th><th class=\"has-text-align-left\" data-align=\"left\">A0<\/th><th class=\"has-text-align-left\" data-align=\"left\">D8-D15<\/th><th class=\"has-text-align-left\" data-align=\"left\">D0-D7<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">&#8211;<\/td><td class=\"has-text-align-left\" data-align=\"left\">A<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And the specification note 6 is quite explicit: &#8220;Combinations of \/SBHE, A1, Ao not shown in the table are not permitted&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For MEMR and MEMW we will focus only on the 3 defined and allowed case, and of course build the test tool to validate that any chassis will not try to perform the last not defined case.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Going further down to the design and considering the case C1,C2,C3 for MEMR and MEMW cycles. Assuming that CD_DS_16 will always asserted for the valid address scope D000 &amp; D4000 range, the RP2350 core1 memory fast path needs to be adjusted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MEMR cycles are the chassis reading memory, and the WonderMCA needs to provides on the bus valid data lines signals during the \/CMD data window. We would manage the memory path this way<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">note: DPRAM is the shared address space shared between the chassis and the WonderMCA<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Case #<\/th><th class=\"has-text-align-left\" data-align=\"left\">\/SBHE<\/th><th class=\"has-text-align-left\" data-align=\"left\">A1<\/th><th class=\"has-text-align-left\" data-align=\"left\">A0<\/th><th class=\"has-text-align-left\" data-align=\"left\">D8-D15<\/th><th class=\"has-text-align-left\" data-align=\"left\">D0-D7<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">C1<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM+1 (ignored)<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">C2<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM+1<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM (ignored)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">C3<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM+1<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For C1 and C2, the WonderMCA provides the data on the bank This is pretty cool because it adds 0 cycle (almost) to the current very tight ASM window on the core1. It means that last address line is ignored for the MEMR path.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on Core1, the DPRAM offset is&nbsp;<code class=\"\" data-line=\"\">MCA Addr &amp; window_mask<\/code>&nbsp;with the low bit forced to 0 (the even-aligned base of the pair) \u2014 the read path ignores A0 and always presents&nbsp;<code class=\"\" data-line=\"\">DPRAM<\/code>&nbsp;on D0-D7 and&nbsp;<code class=\"\" data-line=\"\">DPRAM+1<\/code>&nbsp;on D8-D15, letting the chassis take whichever bank it actually asked for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It seems to be different for MEMW as we need to be careful on the data bank based on A0 and \/SBHE<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">for MEMW cycles, it is different because we need to take care of the A0 &amp; SBHE combination to write the right data to DPRAM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike the read path \u2014 where we could be lazy and drive both banks blindly, letting the chassis pick the one it cares about \u2014 on a write&nbsp;<strong>we<\/strong>&nbsp;are the one capturing the bus, so we have to steer each incoming byte to the correct DPRAM offset. Drop a byte in the wrong bank, or write a bank the chassis never actually drove, and you silently corrupt the neighbouring byte in DPRAM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Staring at the IBM steering table long enough, it collapses to one simple rule:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>the byte for an\u00a0<strong>even<\/strong>\u00a0address always arrives on the\u00a0<strong>low<\/strong>\u00a0bank D0-D7,<\/li>\n\n\n\n<li>the byte for an\u00a0<strong>odd<\/strong>\u00a0address always arrives on the\u00a0<strong>high<\/strong>\u00a0bank D8-D15.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">So with&nbsp;<code class=\"\" data-line=\"\">base = (MCA Addr &amp; window_mask) &amp; ~1<\/code>&nbsp;(the even-aligned offset), the two bank writes are completely independent:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Case #<\/th><th class=\"has-text-align-left\" data-align=\"left\">\/SBHE<\/th><th class=\"has-text-align-left\" data-align=\"left\">A1<\/th><th class=\"has-text-align-left\" data-align=\"left\">A0<\/th><th class=\"has-text-align-left\" data-align=\"left\">write D0-D7 -&gt;<\/th><th class=\"has-text-align-left\" data-align=\"left\">write D8-D15 -&gt;<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">C1<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM[base]<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u2014 (not driven)<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">C2<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">1<\/td><td class=\"has-text-align-left\" data-align=\"left\">\u2014 (not driven)<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM[base+1]<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">C3<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">0<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM[base]<\/td><td class=\"has-text-align-left\" data-align=\"left\">DPRAM[base+1]<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">which boils down to two conditions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">WE_low  = (A0 == 0)            -&gt;  DPRAM&#091;base]   = D0-D7\nWE_high = (\/SBHE asserted)     -&gt;  DPRAM&#091;base+1] = D8-D15\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The low bank is captured whenever A0=0 (C1 and C3); the high bank whenever \/SBHE is asserted (C2 and C3). The odd single-byte case&nbsp;<strong>C2<\/strong>&nbsp;is the one that always catches you out: A0=1, so the low store is suppressed, and the lone byte rides in on the&nbsp;<strong>high<\/strong>&nbsp;half of the bus to land at&nbsp;<code class=\"\" data-line=\"\">base+1<\/code>&nbsp;\u2014 exactly the odd offset the chassis is addressing. It looks weird on paper, but it is the same odd-byte-on-the-high-bank trick every 16-bit ISA\/MCA slave plays.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the Core1 fast path this is a touch more expensive than the read side. Instead of a single blind store we now:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>latch\u00a0<strong>A0<\/strong>\u00a0and\u00a0<strong>\/SBHE<\/strong>\u00a0\u2014 both grabbed for free in the early high-bank ASM snapshot, right next to MIO and the address,<\/li>\n\n\n\n<li>do up to two conditional byte stores (low if A0=0, high if \/SBHE=0).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Worst case (C3, a full word) that is two stores and a branch or two \u2014 still comfortably inside the \/CMD data window, but no longer &#8220;free&#8221; like MEMR. The read path stayed elegant; the write path had to earn its 16 bits.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where this leaves us<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For REV4 the plan is to land 16-bit&nbsp;<strong>MEMR\/MEMW<\/strong>&nbsp;first, on the three legal cases C1\/C2\/C3 \u2014 and, just as important, to ship a little test tool that hammers every A0 \/\/ \/SBHE combination and screams if a chassis ever tries the forbidden&nbsp;<code class=\"\" data-line=\"\">\/SBHE=1, A0=1<\/code>&nbsp;case that note 6 swears can&#8217;t happen. Trust, but verify: the whole reason WonderMCA works across the PS\/2 zoo is that &#8220;the spec says X&#8221; and &#8220;this particular planar actually does X&#8221; are not always the same sentence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once MEMR\/MEMW are solid and \/CD_DS_16 is asserting cleanly over the D0000-D4000 window,&nbsp;<strong>IOR\/IOW<\/strong>&nbsp;in 16-bit is the next bank to open \u2014 same steering logic, same tight timing, twice the I\/O bandwidth. And with both memory and I\/O running 16 bits wide, the native disk path finally gets the doubling this whole revision was chasing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Part of the REV4 revision of the WonderMCA board objective was to introduce 16Bit data Bus instead of 8Bit.All the PS\/2 MCA Bus are able to handle 16Bits data slave along with 24Bits address lines. The expected outcome is to double the MEM &amp; IO bandwidth and thus increase the native disk transfer. The new [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-552","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/posts\/552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/comments?post=552"}],"version-history":[{"count":1,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/posts\/552\/revisions"}],"predecessor-version":[{"id":562,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/posts\/552\/revisions\/562"}],"wp:attachment":[{"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/media?parent=552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/categories?post=552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.r3tr0.net\/index.php\/wp-json\/wp\/v2\/tags?post=552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}